home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 1 / Gekikoh Dennoh Club Vol. 1 (Japan).7z / Gekikoh Dennoh Club Vol. 1 (Japan) (Track 1).bin / tools / xb / xbfnc.doc < prev    next >
Text File  |  1996-12-08  |  19KB  |  735 lines

  1.  
  2. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  3.  
  4.     外部関数とそのライブラリについてのドキュメント
  5.  
  6. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  7.  
  8.  
  9.  
  10.   ぺけ-BASICには、以下の5つの外部関数のファイルが付属しています。
  11.  
  12.     1.DOSFNC.FNC        DOS CALL 関係
  13.     2.IOCSFNC.FNC        IOCS CALL 関係
  14.     3.LZHFNC.FNC        LZH 形式の圧縮ファイルを展開
  15.     4.RASTER.FNC        ラスタスクロールなどの特殊効果
  16.     5.SPDEF.FNC        スプライトをファイル名から定義
  17.  
  18.   それぞれの関数ファイルごとに解説します。
  19.  
  20.  
  21.  
  22.  
  23.  
  24. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  25.  
  26.     1.DOSFNC.FNC
  27.  
  28. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  29.  
  30.  
  31.  
  32.     str    getenv()
  33.     int    setenv()
  34.     int    _system()
  35.  
  36.     int    drvctrl()
  37.     void    chgdir()
  38.     str    curdir()
  39.  
  40.     int    filesnum()
  41.     int    files()
  42.  
  43.   の8つの関数が含まれています。
  44.  
  45.  
  46.  
  47. /*--------------------------------------------------------------------
  48.     str    getenv( ENV;str )
  49. /*--------------------------------------------------------------------
  50.  
  51.   環境変数の内容を得る。
  52.  
  53. **    **    **    **    **    **    **    **    **
  54.  
  55. ENV : 環境変数名
  56.  
  57.  
  58.  
  59. /*--------------------------------------------------------------------
  60.     int    setenv( ENV;str {, SETLINE;str} )
  61. /*--------------------------------------------------------------------
  62.  
  63.   環境変数に文字列を設定する。
  64.  
  65. **    **    **    **    **    **    **    **    **
  66.  
  67. ENV : 環境変数名
  68.  
  69. SETLINE : 設定する文字列
  70.     省略した場合、指定の環境変数を消去する
  71.  
  72. 返り値    = 0 : 正常設定
  73.     < 0 : 異常終了
  74.  
  75.  
  76.  
  77. /*--------------------------------------------------------------------
  78.     int    _system( COMLINE;str )
  79. /*--------------------------------------------------------------------
  80.  
  81.   COMLINE を command.x に渡して子プロセスとして起動する。
  82.  
  83. **    **    **    **    **    **    **    **    **
  84.  
  85. COMLINE : コマンドの文字列
  86.  
  87. 返り値    : 終了コード
  88.  
  89.  
  90. **    **    **    **    **    **    **    **    **
  91.  
  92.   command.x がパスの通ったディレクトリに存在しなければいけません。
  93.   COMLINE として、'copy', 'del' 等の内部コマンドも使えます。
  94.  
  95.   BAStoC 時には、stdlib.h の system() 関数 に置き換えられます。
  96.  
  97.  
  98.  
  99. /*--------------------------------------------------------------------
  100.     int    drvctrl( COM;int {, DRVNAME;str } )
  101. /*--------------------------------------------------------------------
  102.  
  103.   ドライブの状態をチェック・設定する。
  104.  
  105. **    **    **    **    **    **    **    **    **
  106.  
  107. COM =-1 : カレントドライブの値を返す (0=A:, 1=B:, ...) (DRVNAME は意味無し)
  108.       0 : 状態チェック
  109.       1 : イジェクト  ( ハードディスクの時はシッピング?)
  110.       2 : イジェクト禁止
  111.       3 : イジェクト許可
  112.       4 : ディスクがセットされていない時にLED点滅
  113.       5 : ディスクがセットされていない時にLED消灯
  114.       6 : カレントドライブの変更
  115.       7 : メディアバイトを返す
  116.  
  117. DRVNAME : ドライブ名を "A:" の形で指定
  118.     省略した場合、カレントドライブ
  119.  
  120. COM = 0 の返り値:
  121.     bit 7 : LED点滅
  122.     bit 6 : イジェクト禁止
  123.     bit 5 : バッファ有り
  124.     bit 4 : ユーザーによるイジェクト禁止
  125.     bit 3 : ライトプロテクト
  126.     bit 2 : ノットレディ
  127.     bit 1 : メディア挿入
  128.     bit 0 : 誤挿入
  129.  
  130. COM = 1,2,3,4 の返り値:
  131.     >= 0 : 正常終了 (設定後のメディアの状態)
  132.     <  0 : エラー
  133.  
  134. **    **    **    **    **    **    **    **    **
  135.  
  136.   メディアバイト:
  137.     $f4 : DAT (SCSI)
  138.     $f5 : CD-ROM (SCSI)
  139.     $f6 : MO (SCSI)
  140.     $f7 : ハードディスク (SCSI)
  141.     $f8 : ハードディスク
  142.     $f9 : RAM DISK
  143.     $fa : 2HD (1.44MB)
  144.     $fb : 2DD (640KB)
  145.     $fc : 2DD (720KB)
  146.     $fd : 2HC (1MB)
  147.     $fe : 2HD (1MB)
  148.  
  149.  
  150.  
  151. /*--------------------------------------------------------------------
  152.     void    chgdir( DIR;str )
  153. /*--------------------------------------------------------------------
  154.  
  155.   カレントディレクトリを変更する。
  156.  
  157. **    **    **    **    **    **    **    **    **
  158.  
  159. DIR : ディレクトリ名
  160.  
  161.  
  162.  
  163. /*--------------------------------------------------------------------
  164.     str    curdir( {DRV;str} )
  165. /*--------------------------------------------------------------------
  166.  
  167.   カレントディレクトリを返す。
  168.  
  169. **    **    **    **    **    **    **    **    **
  170.  
  171. DRV :  "A:" の形で指定したドライブのカレントディレクトリを返す。
  172.     省略した場合、カレントドライブが対象となる。
  173.  
  174.  
  175.  
  176. /*--------------------------------------------------------------------
  177.     int    filesnum( FILENAME;str, ATTRIB;int )
  178. /*--------------------------------------------------------------------
  179.  
  180.   指定のファイル名とアトリビュートに一致するファイルの個数を返す。
  181.  
  182. **    **    **    **    **    **    **    **    **
  183.  
  184. FILENAME : ファイル名。ワイルドカードも使用可。
  185. ATTRIB : アトリビュート
  186.  
  187.  
  188.  
  189. /*--------------------------------------------------------------------
  190.     int    files( FILENAME;str, ATTRIB;int,NAMES();str,
  191.                 SIZES();int, TIMES();int, ATTRS();char )
  192. /*--------------------------------------------------------------------
  193.  
  194.   指定のファイル名とアトリビュートに一致するファイルの情報を配列に展開
  195. する。
  196.  
  197. **    **    **    **    **    **    **    **    **
  198.  
  199. FILENAME : ファイル名。ワイルドカードも使用可。
  200. ATTRIB : アトリビュート
  201.  
  202. NAMES : ファイル名の格納先
  203. SIZES : ファイルサイズ
  204. TIMES : タイムスタンプ
  205. ATTRS : アトリビュート
  206.     4つの配列は、要素の個数を同じくしておかないといけません。
  207.  
  208.  
  209.  
  210.  
  211.  
  212. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  213.  
  214.     2.IOCSFNC.FNC
  215.  
  216. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  217.  
  218.  
  219.  
  220.     int    bpeek()
  221.     int    wpeek()
  222.     int    lpeek()
  223.     void    bpoke()
  224.     void    wpoke()
  225.     void    lpoke()
  226.  
  227.     int    iocs()
  228.     int    _arp()
  229.     int    _vrp()
  230.  
  231.   の9つの関数が含まれています。
  232.   なお、bpoke(), wpoke(), lpoke(), _arp() の仕様については、EXEC.FNC
  233. ( Oh!X '95年10月号掲載 ) を参考にさせていただきました。
  234.  
  235.  
  236.  
  237. /*--------------------------------------------------------------------
  238.     int    bpeek( ADR;int )
  239.     int    wpeek( ADR;int )
  240.     int    lpeek( ADR;int )
  241. /*--------------------------------------------------------------------
  242.  
  243.   指定アドレスのメモリを読み出す。
  244.   bpeek() はバイト単位、wpeek() はワード単位、lpeek() はロングワード単
  245. 位で読み出す。
  246.  
  247. **    **    **    **    **    **    **    **    **
  248.  
  249. ADR : アドレス
  250.     wpeek(), lpeek() で奇数アドレスを指定するとエラー
  251.  
  252.  
  253.  
  254. /*--------------------------------------------------------------------
  255.     void    bpoke( ADR;int, VAR1;int {, VAR2;int, ... , VAR9;int } )
  256.     void    wpoke( ADR;int, VAR1;int {, VAR2;int, ... , VAR9;int } )
  257.     void    lpoke( ADR;int, VAR1;int {, VAR2;int, ... , VAR9;int } )
  258. /*--------------------------------------------------------------------
  259.  
  260.   指定アドレスのメモリに値を書き込む。
  261.   bpoke() はバイト単位、wpoke() はワード単位、lpoke() はロングワード単
  262. 位で書き込む。
  263.   最大 9 個まで連続に書き込むことができる。
  264.  
  265. **    **    **    **    **    **    **    **    **
  266.  
  267. ADR : アドレス
  268.     wpoke(), lpoke() で奇数アドレスを指定するとエラー
  269.  
  270. VAR1, ... VAR9 : データ
  271.  
  272. **    **    **    **    **    **    **    **    **
  273.  
  274.   不用意な使い方をすると、暴走・システムの破壊などの取り返しのつかない
  275. ことも起き得る関数なので、注意して下さい。
  276.  
  277.  
  278.  
  279. /*--------------------------------------------------------------------
  280.     int    iocs( IOCS_CALL;int, {d1;int, d2;int, 
  281.             d3;int, d4;int, d5;int, a1(), a2()} )
  282. /*--------------------------------------------------------------------
  283.  
  284.   IOCS CALL を呼び出す。
  285.  
  286. **    **    **    **    **    **    **    **    **
  287.  
  288. IOCS_CALL : IOCS CALL 番号
  289.  
  290. d1-d5 : 指定のレジスタにセットされる値
  291.  
  292. a1/a2 : 数値型の配列名。データ部分の先頭が a1/a2 にセットされる
  293.  
  294. **    **    **    **    **    **    **    **    **
  295.  
  296.   IOCS_CALL 以外は省略可能です。
  297.   不用意な使い方をすると、暴走・システムの破壊などの取り返しのつかない
  298. ことも起き得る関数なので、注意して下さい。
  299.  
  300.  
  301.  
  302. /*--------------------------------------------------------------------
  303.     int    _arp( DIM )
  304. /*--------------------------------------------------------------------
  305.  
  306.   指定の配列のデータ部分の先頭アドレスを返します。
  307.  
  308. **    **    **    **    **    **    **    **    **
  309.  
  310. DIM : 1 or 2 次元の配列名(型はいずれでも良い)
  311.  
  312.  
  313.  
  314. /*--------------------------------------------------------------------
  315.     int    _vrp( VAR )
  316. /*--------------------------------------------------------------------
  317.  
  318.   指定の変数のポインタを返す。
  319.  
  320. **    **    **    **    **    **    **    **    **
  321.  
  322. VAR : 変数名(型はいずれでも良い)
  323.  
  324.  
  325.  
  326.  
  327.  
  328. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  329.  
  330.     3.LZHFNC.FNC
  331.  
  332. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  333.  
  334.  
  335.  
  336.     int    lzh_extend()
  337.  
  338.   の1つの関数が含まれています。
  339.  
  340.  
  341.  
  342. /*--------------------------------------------------------------------
  343.     int    lzh_extend( FILENAME;str, BUF() )
  344. /*--------------------------------------------------------------------
  345.  
  346.   .LZH 形式の圧縮ファイルを配列上に展開する。
  347.  
  348. **    **    **    **    **    **    **    **    **
  349.  
  350. FILENAME : 展開する圧縮ファイル名
  351.     拡張子は省略不可能
  352.  
  353. BUF() : 展開先の配列名
  354.     次元は1または2次元、型は int, char, float のいずれも可
  355.  
  356. **    **    **    **    **    **    **    **    **
  357.  
  358.   展開されるファイルは、アーカイブの先頭のファイルだけである。
  359.  
  360.   BASICの外部関数として使っている時は、指定の配列より大きなファイ
  361. ルを展開しようとすればエラーを発行しますが、ライブラリは展開先の大きさ
  362. などおかまいなく展開してしまいます。
  363.  
  364.  
  365.  
  366.  
  367.  
  368. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  369.  
  370.     4.RASTER.FNC
  371.  
  372. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  373.  
  374.  
  375.  
  376.     void    v_priority()
  377.     int    v_special()
  378.     void    v_disp()
  379.  
  380.     int    ras_scroll_set()
  381.     int    ras_scroll_stat()
  382.     void    ras_home()
  383.  
  384.   の6つの関数が含まれています。
  385.  
  386.  
  387.  
  388.   {} で囲ってある引き数は省略可能。
  389.  
  390.  
  391.  
  392. /*--------------------------------------------------------------------
  393.     void    v_priority( STG;str, GRAPH;str )
  394. /*--------------------------------------------------------------------
  395.  
  396.   テキスト・スプライト・グラフィックの間と、グラフィック0~3の間のプ
  397. ライオリティを変更する。
  398.  
  399. **    **    **    **    **    **    **    **    **
  400.  
  401. STG : テキスト・スプライト・グラフィックの間のプライオリティの指定
  402.     文字 S,T,G の順番で指定する。先に書いたものの方が優先順位は高い
  403.     例: TEXT > GRAPH > SPRITE  =>  "TGS"
  404.  
  405. GRAPH : グラフィック0~3の間のプライオリティの指定
  406.     文字 0,1,2,3 の順番で指定する。先に書いたものの方が優先順位は高い
  407.     例: G0 > G3 > G1 > G2  =>  "0312"
  408.  
  409. **    **    **    **    **    **    **    **    **
  410.  
  411.   ともに、同じ面を2つ以上指定するとエラーとなる。
  412.  
  413.  
  414.  
  415. /*--------------------------------------------------------------------
  416.     int    v_special( MD;int )
  417. /*--------------------------------------------------------------------
  418.  
  419.   ビデオコントローラの特殊表示機能、具体的に半透明と特殊プライオリティ
  420. を制御する。
  421.  
  422. **    **    **    **    **    **    **    **    **
  423.  
  424. MD : 動作を指定
  425.  
  426. MD = -1 : 今の状態を返す ( 0 ~ 8 )
  427.    =  0 : 特殊表示機能を使用しない
  428.    =  1 ~ 7 : ベースページとそれぞれ指定の面との半透明動作を行う。
  429.         1 : テキストパレットの0の色
  430.         2 : テキスト
  431.         3 :           セカンドページ
  432.         4 : テキスト+セカンドページ
  433.         5 : テキスト                +テレビ/ビデオ
  434.         6 :           セカンドページ+テレビ/ビデオ
  435.         7 : テキスト+セカンドページ+テレビ/ビデオ
  436.    =  8 : 特殊プライオリティ
  437.  
  438. **    **    **    **    **    **    **    **    **
  439.  
  440.     ベースページ   : グラフィックのプライオリティの最も高い面
  441.     セカンドページ : グラフィックのプライオリティの2番目に高い面
  442.     テキスト       : スプライト、BGも含む、グラフィックよりプラ
  443.                          イオリティの低い面
  444.  
  445.  
  446.  
  447. /*--------------------------------------------------------------------
  448.     void    v_disp( {MD;int} )
  449. /*--------------------------------------------------------------------
  450.  
  451.   垂直帰線・表示期間を待つ
  452.  
  453. **    **    **    **    **    **    **    **    **
  454.  
  455. MD : どちらを待つか指定
  456.    =  0 : 垂直帰線期間を待つ
  457.    <> 0 : 垂直表示期間を待つ
  458.   省略した場合、垂直帰線期間を待つ
  459.  
  460.  
  461.  
  462. /*--------------------------------------------------------------------
  463.     int    ras_scroll_set( MD;int, RAS_DAT(,);int, PAGES;int,
  464.                 RASTERS;int, FIRST_RASTER;int)
  465. /*--------------------------------------------------------------------
  466.  
  467.   ラスタスクロール用のデータをセット
  468.  
  469. **    **    **    **    **    **    **    **    **
  470.  
  471. MD : ラスタスクロールさせる面を選ぶ
  472. MD = 0: BG0 (横方向のみ)
  473.      1: BG1 (横方向のみ)
  474.      2: BG0 (縦横)
  475.      3: BG1 (縦横)
  476.      4: GRAPH0
  477.      5: TEXT
  478.      6: BG0 (縦横、差分)
  479.      7: BG1 (縦横、差分)
  480.  
  481.  
  482. dim RAS_DAT( PAGES, RASTERS ) : ラスタスクロール用のデータ
  483.  
  484. PAGES   : 最大ページ番号
  485.  
  486. RASTERS : 1ページ当たりのラスタ数 - 1
  487.     省略時には、RAS_DAT(,) の第1添え字、第2添え字の最大がそれぞれ
  488.     セットされる。
  489.     コンパイルの時には省略不可能。
  490.  
  491.  
  492. FIRST_RASTER : スクロール(割り込み)開始ラスタ番号
  493.     ラスタの本数は 15kHz のとき 260 本
  494.                31kHz のとき 568 本なので,
  495.     FIRST_RASTER + RASTERS がその値を越えないよう注意
  496.     省略時には0と見なす。
  497.  
  498.  
  499. **    **    **    **    **    **    **    **    **
  500.  
  501.   ラスタスクロール用のデータ RAS_DAT( PAGES, RASTERS ) は次のような形
  502. 式になっています。
  503.  
  504.  
  505. RAS_DAT(n,m) = n ページ目の ( FIRST_RASTER + m ) 番目のラスタ表示時に
  506.            スクロールレジスタにセットされる値。
  507.  
  508.   MD = 0,1,4,5 のときは、X 方向のスクロールレジスタにセットされる値で
  509. す。
  510.  
  511.   MD = 2,3 のときは、x,y をそれぞれ X,Y スクロールレジスタにセットされ
  512. る値だとすると、RAS_DAT(n,m) = x * &h10000 + y となります。
  513.  
  514.   MD = 6,7 のときは、前のラスタのデータからの差分で与えます。すなわち、
  515.     RAS_DAT(n,m) = dx * &h10000 + dy
  516.         dx, dy : 0 ~ &h3ff
  517.  
  518.  
  519. **    **    **    **    **    **    **    **    **
  520.  
  521.   X-BASICやぺけ-BASICでラスタスクロールを実行中に、CTRL+C 
  522. で実行を止めると、ラスタスクロールも止まります。
  523.  
  524.  
  525.   コンパイルする時には、次の2点を守って下さい。
  526.  
  527.     1:ras_scroll_set() の第3・4パラメータは省略不可能
  528.  
  529.     2:BAStoC で生成したCのソースの、b_exit(); の直前に
  530.         ras_scroll_exit(); を『必ず』加える。
  531.  
  532.   ras_scroll_exit() は、書き替えたベクタを元に戻したり、割り込みを解除
  533. したりといった後始末を行う関数ですから、もし実行しないまま終了すると、
  534. 以降のアプリケーションの実行に支障が出ます。
  535.   また、実行中に INTERRUPT で ABORT すると、ras_scroll_exit() を通らな
  536. いまま終了してしまいます。
  537.  
  538.  
  539.  
  540. /*--------------------------------------------------------------------
  541.     int    ras_scroll_stat( COM;int {, FIRST_PAGE;int,
  542.                     LAST_PAGE;int, LOOPS;int} )
  543. /*--------------------------------------------------------------------
  544.  
  545.   ラスタスクロールをコントロールや、状態を獲得を行う。
  546.  
  547. **    **    **    **    **    **    **    **    **
  548.  
  549. COM : コマンド
  550. COM = -1 :状態を得る。
  551.     返り値: > 0 : 残りループ回数
  552.          = 0 : 無限ループ
  553.          < 0 : ラスタスクロール終了
  554. COM =  0 : ラスタスクロールを止めて、データをリセットする
  555.        別のデータをセットし直す前は、必ずこの命令を行う
  556. COM =  1 : ras_scroll_set() によって与えられてデータにしたがって
  557.        ラスタスクロール開始
  558.  
  559. COM = -1,0 の時、残りのパラメータは意味無し
  560.  
  561. COM = 1 の時。
  562.  
  563. FIRST_PAGE : 開始ページ
  564. LAST_PAGE  : 終了ページ
  565.     ページデータの記述は ras_scroll_set() 参照
  566.     省略時には、先頭ページ (=0) と末尾ページ (= ras_scroll_set() の PAGES)
  567.     がそれぞれセットされる。
  568.  
  569. LOOPS : ループ回数
  570.       = 0 : 無限ループ
  571.       > 0 : その回数のループ
  572.     省略時には 0 = 無限ループと見なす
  573.  
  574.  
  575.  
  576. /*--------------------------------------------------------------------
  577.     void    ras_home( X;int {, Y;int} )
  578. /*--------------------------------------------------------------------
  579.  
  580.   ラスタスクロールに対応した、ras_scroll_set() の MD で指定した面の左
  581. 上の座標の設定を行う(本来の bg_scroll(), home() などは無効となるので
  582. 注意)。
  583.  
  584. **    **    **    **    **    **    **    **    **
  585.  
  586. X,Y  : セットされる x,y 座標
  587.  
  588.  
  589.  
  590.  
  591.  
  592. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  593.  
  594.     5.SPDEF.FNC
  595.  
  596. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  597.  
  598.  
  599.  
  600.     int    spfile_def()
  601.     int    palfile_def()
  602.  
  603.  
  604.   の2つの関数が含まれています。
  605.  
  606.  
  607.  
  608. /*--------------------------------------------------------------------
  609.     int    spfile_def( FILENAME;str, SP_NO;int )
  610. /*--------------------------------------------------------------------
  611.  
  612.   スプライトデータの収められたファイルから、スプライトを定義する。
  613.  
  614. **    **    **    **    **    **    **    **    **
  615.  
  616. FILENAME : スプライトデータの収められたファイル名
  617.  
  618. SP_NO : 定義を始めるスプライト番号 ( 0 ~ 255 )
  619.  
  620. **    **    **    **    **    **    **    **    **
  621.  
  622.   ファイルの形式は以下の通り。
  623.  
  624. オフセット
  625.    +&h00    SP_NO     番目のスプライトデータ
  626.    +&h80    SP_NO + 1 番目のスプライトデータ
  627.     :          :             :
  628.  
  629.   各々のスプライトデータは、1パタン当たり 16x16 ドットの大きさで、PCG
  630. エリアにそのまま書き込める形式になっている。
  631.  
  632.  
  633.  
  634. /*--------------------------------------------------------------------
  635.     int    palfile_def( FILENAME;str, PAL_NO;int )
  636. /*--------------------------------------------------------------------
  637.  
  638.   パレットデータの収められたファイルから、パレットを定義する。
  639.  
  640. **    **    **    **    **    **    **    **    **
  641.  
  642. FILENAME : パレットデータの収められたファイル名
  643.  
  644. PAL_NO : 定義を始めるパレット番号 ( 0 ~ 15 )
  645.  
  646. **    **    **    **    **    **    **    **    **
  647.  
  648.   ファイルの形式は以下の通り。
  649.  
  650. オフセット
  651.    +&h00    PAL_NO     番目のパレットデータ
  652.    +&h20    PAL_NO + 1 番目のパレットデータ
  653.     :           :             :
  654.  
  655.   各々のパレットデータは、
  656.  
  657. オフセット
  658.    +&h00    色コード  0 の色データ
  659.    +&h02    色コード  1 の色データ
  660.     :
  661.    +&h1e    色コード 15 の色データ
  662.  
  663.   なお、0 番目のパレットデータはテキストパレットと共用である。
  664.  
  665.  
  666.  
  667.  
  668.  
  669.  
  670. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  671.  
  672.     独り言……でもみんなに聞いてほしいな
  673.  
  674. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  675.  
  676.  
  677.   事の発端は、Oh!X '94年11月号の 48ページの下にある小コラム「外部関数
  678. の集大成を」です。内容は、「外部関数はユーザーのアイデア次第でどんどん
  679. 拡張していくことができます。理論上はほとんど不可能なことはありません」
  680. 「そろそろX-BASICの集大成的なものをまとめる時機にきているのかも
  681. しれません」という二文に集約されていると言っていいでしょう。
  682.  
  683.   これを読んですっかり共感した中谷秀洋は、その後このことをすっかり忘れ
  684. てしまいました……終わり。
  685.  
  686.   このままでは本当に終わってしまいますが、後から勘定したら、ちょうどこ
  687. のコラムを読んだ半月後から ぺけ-BASICを作り始めるのですから、完全
  688. に忘れ去っていたわけではないようです。
  689.  
  690.   それからおよそ半年。ぺけ-BASICの ver.0.01 を公開し、さあて、こ
  691. いつをどう展開しようかと考え込んだ中谷の頭をよぎったのが、「ラスタスク
  692. ロールの外部関数」です。
  693.  
  694.   それが僕のオリジナルの考えでないことも一緒に思い出したので、Oh!X を
  695. ひっくり返してようやく当のコラムを見つけ出したのでした。その時、むくむ
  696. くと次のような野望が頭をもたげてきたのです。
  697.  
  698. 「ぺけ-BASICなら『X-BASICの集大成』とやらの、きっかけなり核
  699. なりになれるんでないかい?」
  700.  
  701.   これまで Oh!X や電脳倶楽部等で発表されてきた外部関数は、お世辞にも広
  702. くたくさんの人に使ってもらえているとは言えないでしょう。その理由はいく
  703. つかあると思いますが、「他のみんなが持っているとは限らない」「X-BA
  704. SICの遅さを補うための関数であるがゆえ、特殊な用途にしか向かない」の
  705. 二つが双壁ではないでしょうか。
  706.  
  707.   ところで拙作ぺけ-BASICは、X-BASICでどうにもならなかったこ
  708. とがなんとかなる程度の実行速度を持っています。また、ぺけ-BASICに
  709. 外部関数を付属させるという格好を取れば、少なくとも ぺけ-BASICを持
  710. っている人は全員、その外部関数も持っていることになります。
  711.  
  712.   当たり前ですが、それらの外部関数が全て中谷の作ったものである必要なん
  713. てどこにもありません。今まで発表されてきた外部関数達にも良い物はたくさ
  714. んあります。それらの作者の方々の協力が得られれば、自然『X-BASIC
  715. の集大成』は実現してしまうでしょう。
  716.  
  717.   今回の外部関数群は、この野望の実現のためにはまだまだ力不足で、ひいき
  718. 目に見てやって、ようやく第一歩目というところが関の山です。
  719.  
  720.   こういう事を考えている人間がいる、という事を知ってもらいたい。賛同し
  721. てくれる方がいるかもしれないし、いないかもしれない。一つ確実なことは、
  722. 一人で始めることが出来たとしても、一人で続けることは出来ないだろうとい
  723. う事だけです。
  724.  
  725.  
  726.  
  727.  
  728.  
  729. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  730.     平成 7 年 6 月 16 日
  731.                             中谷  秀洋
  732.         でんでんネット               DEN1608  ( AKSTN. )
  733. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  734.  
  735.